    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package fr.univnantes.alma.arbres;

/**
 *
 * @author judu
 */
public class Noeud<T> {

    private Integer etiquette;
    private T valeur;
    private int position;

	 /**
     *  Cette fonction crée un Noeud.
     * @param etiquette : l'étiquette du Noeud à créer
     * @return un Noeud
     */
     public Noeud(Integer etiquette, T valeur, int position){
     	this.etiquette = etiquette;
        this.valeur = valeur;
        this.position = position;
     }

    public Noeud(Integer etiquette, int position) {
        this.etiquette = etiquette;
        this.position = position;
        this.valeur = null;
    }

    public Noeud(Integer etiquette){
        this.etiquette = etiquette;
    }

    public T getValeur() {
        return valeur;
    }

    public void setValeur(T valeur) {
        this.valeur = valeur;
    }


    /**
     * Définit la position
     * @param position
     */
    public void setPosition(int position) {
        this.position = position;
    }


    /**
     * Retourne la position du Noeud
     * @return l'entier qui est la position
     */
    public int getPosition() {
        return position;
    }

    /**
     *  Cette fonction récupère l'étiquette du Noeud.
     * @param : Noeud lui-même
     * @return étiquette du Noeud
     */
    public Integer getEtiquette(){
            return this.etiquette;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Noeud other = (Noeud) obj;
        if (this.etiquette != other.etiquette && (this.etiquette == null || !this.etiquette.equals(other.etiquette))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 89 * hash + (this.etiquette != null ? this.etiquette.hashCode() : 0);
        return hash;
    }


    
	
    @Override
    public String toString(){
        if (this.getValeur() == null) {
            return "Noeud("+this.getEtiquette()+")[pos : "+this.position+"]";
        } else {
            return "Noeud("+this.getEtiquette()+")[pos : "+this.position+", val : "+this.getValeur().toString()+"]";
        }
        
    }
}
